using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Gratamira.CapaNegocio;
using Infragistics.Win.UltraWinEditors;

namespace Gratamira.Presentacion
{
    public partial class frmMaeTipoMov : frmBaseMaestra, IBaseMaestra
    {

        private TipoMovimiento mTipoMov;
        //Adicionar variable de fuente de enlace
        private BindingSource fuenteEnlace = new BindingSource();

        public frmMaeTipoMov(string pTipoMovID, estadoPantalla pModoPantalla)
        {
            InitializeComponent();
            if (pModoPantalla != estadoPantalla.Insertar)
            {
                mTipoMov = new TipoMovimiento(pTipoMovID);
            }
            else
            {
                mTipoMov = new TipoMovimiento();
            }
            base.Estado = pModoPantalla;
            this.Text = Usuario.Empresa + " - Maestra de Tipo de Movimiento";
        }

        public override void deshabilitarControles()
        {
            //No permite modificar el contenido de los controles
            txtCodigo.Enabled = false;
            txtNombre.Enabled = false;
            ddlTipo.Enabled = false;
            chkTransferencia.Enabled = false;
            chkReserva.Enabled = false;
        }

        public override void habilitarControles()
        {
            //Permite modificar el contenido de los controles
            if (base.Estado == estadoPantalla.Insertar)
            {
                txtCodigo.Enabled = true;
            }
            txtNombre.Enabled = true;
            ddlTipo.Enabled = true;
            //chkTransferencia.Enabled = true;
            chkReserva.Enabled = true;
        }

        public override void unirDatosClaseForma()
        {
            fuenteEnlace.DataSource = mTipoMov;
            txtCodigo.DataBindings.Add("Text", fuenteEnlace, "TipoMovID");
            txtNombre.DataBindings.Add("Text", fuenteEnlace, "Nombre");
            ddlTipo.DataBindings.Add("Text", fuenteEnlace, "Tipo");
            chkTransferencia.DataBindings.Add("Checked", fuenteEnlace, "IndTransferencia");
            chkReserva.DataBindings.Add("Checked", fuenteEnlace, "IndReserva");
        }
        
        public override bool salvarCambios()
        {
            mTipoMov.UsuarioCreacion = Usuario.NombreUsuario;
            mTipoMov.UsuarioModificacion = Usuario.NombreUsuario;
            return mTipoMov.insertarTipoMovimiento();

        }

        public override void actualizarCambios()
        {
            mTipoMov.UsuarioModificacion = Usuario.NombreUsuario;
            mTipoMov.actualizarTipoMovimiento();
        }

        public override void limpiarControles()
        {
            mTipoMov.TipoMovID = "";
            mTipoMov.Nombre = "";
            mTipoMov.Tipo = ddlTipo.Items[0].ToString();
            mTipoMov.Transferencia = "N";
            mTipoMov.Reserva = "N";
            fuenteEnlace.ResetBindings(false);
        }

        public override void leerDatosAuditoria(out string pUsuaCrea, out string pFechCrea, out string pUsuaModi, out string pFechModi)
        {
            pUsuaCrea = mTipoMov.UsuarioCreacion;
            pUsuaModi = mTipoMov.UsuarioModificacion;
            pFechCrea = mTipoMov.FechaCreacion;
            pFechModi = mTipoMov.FechaModificacion;
        }

        public override bool hayDatosModificados()
        {
            return mTipoMov.Modificada;
        }

        public override bool verificarDatos()
        {
            if (utilidadesPresentacion.verificarContenido(txtCodigo,epTipoMov) && utilidadesPresentacion.verificarContenido(txtNombre, epTipoMov) &&
                utilidadesPresentacion.verificarContenido(ddlTipo,epTipoMov))
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        private void txtCodigo_Enter(object sender, EventArgs e)
        {
            txtCodigo.SelectAll();
        }

        private void txtNombre_Enter(object sender, EventArgs e)
        {
            txtNombre.SelectAll();
        }

        private void chkTransferencia_CheckedChanged(object sender, EventArgs e)
        {
            mTipoMov.IndTransferencia = chkTransferencia.Checked;
        }
        private void chkReserva_CheckedChanged(object sender, EventArgs e)
        {
            mTipoMov.IndReserva = chkReserva.Checked;
        }

        private void ddlTipo_ValueChanged(object sender, EventArgs e)
        {
            try
            {
                mTipoMov.Tipo = ddlTipo.SelectedItem.ToString();
            }
            catch (NullReferenceException)
            {
            }
        }


    }
}